/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.aseguradora.servicio;

import ec.edu.espe.distribuidas.aseguradora.dao.MedicoFacade;
import ec.edu.espe.distribuidas.aseguradora.exception.ErrorValidacionException;
import ec.edu.espe.distribuidas.aseguradora.modelo.Medico;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author alejandro
 */
@Stateless
@LocalBean
public class MedicoServicio {
    
    @EJB
    private MedicoFacade medicoFacade;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void crear(Medico medico){
        Medico medicoTmp=this.medicoFacade.find(medico.getCodMedico());
        if(medicoTmp==null){
            this.medicoFacade.create(medico);
        }else{
            System.err.println("Codigo del medico ya registrado"+medicoTmp.getCodMedico());
            ErrorValidacionException evex=new ErrorValidacionException("El codigo ya se encuentra registrado");
            throw evex;
        }
    }
    
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void modificar(Medico medico){
        this.medicoFacade.edit(medico);
     }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void eliminar(String codigo){
        Medico medicoTmp=this.medicoFacade.find(codigo);
        if(medicoTmp!=null){
            this.medicoFacade.remove(medicoTmp);
        }else{
            System.err.println("No existe medico con el codigo "+codigo);
            ErrorValidacionException evex=new ErrorValidacionException("No existe medico con el codigo");
            throw evex;
        }
     }
    
    public List<Medico> obtenerTodos()
    {
        return this.medicoFacade.findAll();
    }
  
    
}
